/**
 *
 */
package siebes.rmi.sorter;

/**
 * Klasse voor het meten van de tijd.
 * @author eddie
 *
 */
public class Stopwatch {

    /**
     * Ga na op de stopwatch al loopt.
     */
    private boolean isRunning = false;

    /**
     * Startijd meting.
     */
    private long startTime;

    /**
     * Tijd die de timer al gelopen heeft.
     */
    private long elapsedTime;

    /**
     * Zet alles op nul als de klasse wordt geinitaliseerd.
     */
    public Stopwatch() {
        reset();
    }

    /**
     *Stop de timing en zet de gelopen tijd op 0.
     */
    public final void reset() {
        elapsedTime = 0;
        isRunning = false;
    }

    /**
     * Start de stopwatch.
     */
    public final void start() {
        if (isRunning) {
            return;
        }
        isRunning = true;
        startTime = System.currentTimeMillis();
    }

    /**
     * Stop de stopwatch.
     */
    public final void stop() {
        if (!isRunning) {
            return;
        }
        isRunning = false;
        long endTime = System.currentTimeMillis();
        elapsedTime = elapsedTime + endTime - startTime;
    }

     /**
     *Returns de totaal afgelegde tijd.
     *@return de totaal afgelegde tijd.
     */
    public final long getElapsedTime() {
         if (isRunning) {
             long endTime = System.currentTimeMillis();
             return elapsedTime + endTime - startTime;
         } else {
             return elapsedTime;
         }
     }
}
